import validator from 'validator';

import { IUserDocument } from '../models/user';

export interface RegisterInput extends Partial<IUserDocument> {
  confirmPassword?: string;
}

export interface RegisterInputValidateResult {
  errors: RegisterInput;
  valid: boolean;
}

export const validateRegisterInput = (
  username: string,
  password: string,
  confirmPassword: string,
  email: string
): RegisterInputValidateResult => {
  let errors: RegisterInput = {};
  if (username == undefined || validator.isEmpty(username)) {
    errors.username = '用户名不能为空';
  }
  if (password == undefined || validator.isEmpty(password)) {
    errors.password = '密码不能为空';
  }
  if (confirmPassword == undefined || validator.isEmpty(confirmPassword)) {
    errors.password = '确认密码不能为空';
  }
  if (!validator.equals(password, confirmPassword)) {
    errors.confirmPassword = '确认密码和密码不相等';
  }
  if (email == undefined || validator.isEmpty(password)) {
    errors.email = '邮箱不能为空';
  }
  if (!validator.isEmail(email)) {
    errors.email = '邮箱格式必须合法';
  }

  return { errors, valid: Object.keys(errors).length === 0 };
};
